function salvar(){
	
	run_waitMe();
	
	limparMensagem();
	desabilitaBotoes();

	$.ajax({
        url:  basepath+"admin/config_email/salvar",
        data: $('#formConfigEmail').serialize(),
        type: 'POST',
        async: false,
        success: function(retorno){
        	
        	stop_waitMe();
        	
        	var obj = jQuery.parseJSON( retorno );
        	
        	habilitaBotoes();
        	
    		if (obj.sucesso == true) {
    			limparFormConfigEmail();
    		}
    		
    		//Rola a página para cima
    		$('html, body').animate({ scrollTop: 0 }, 'slow');
    		
    		// Mostra mensagem
    		$("#mensagem").show();
    		$("#mensagem").prepend('<div class="row alert '+obj.tipoMensagem+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+obj.mensagem+'</div>');
        	
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	stop_waitMe();
        	
        	habilitaBotoes();
        	
        	//Rola a página para cima
			$('html, body').animate({ scrollTop: 0 }, 'slow');
			
			// Mostra mensagem
			$("#mensagem").show();
			$("#mensagem").prepend('<div class="row alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>Ocorreu um erro. Tente novamente mais tarde!</div>');
        }
    });
    			
}

function limpaCampo(){
	$('#formConfigEmail').each (function(){
	  this.reset();
	});
}

function limparFormConfigEmail(){
	$('#formConfigEmail').data('formValidation').resetForm();
}

function habilitaBotoes(){
	// Habilita o botão novamente
	$("#buttonSalvar").removeAttr("disabled");
	$("#buttonVoltar").removeAttr("disabled");
}

function desabilitaBotoes(){
	// Desabilita os botões
	$("#buttonSalvar").attr("disabled", "disabled");
	$("#buttonVoltar").attr("disabled", "disabled");
}

function limparMensagem(){
	// Limpando dados da mensagem
	$("#mensagem").hide();
	$("#mensagem").html("");
}

function formConfigEmail() {
	
	$('#formConfigEmail').formValidation({
		framework: 'bootstrap',
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        button: {
		    // The disabled class
		    disabled: ''
		},
        fields : {
        	protocol: {
                validators: {
                    notEmpty: {
                        message: 'Protocol deve ser informado.'
                    }
                }
            },
            smtpHost: {
                validators: {
                    notEmpty: {
                        message: 'SMTP Host deve ser informado.'
                    }
                }
            },
            smtpPort: {
                validators: {
                    notEmpty: {
                        message: 'SMTP Port deve ser informado.'
                    },
                    integer: {
                        message: 'Somente número é permitido.'
                    }
                }
            },
            smtpUser: {
                validators: {
                    notEmpty: {
                        message: 'SMTP User deve ser informado.'
                    }
                }
            },
            smtpPass: {
                validators: {
                    notEmpty: {
                        message: 'SMTP Password deve ser informado.'
                    }
                }
            },
            smtpTimeOut: {
                validators: {
                    notEmpty: {
                        message: 'SMTP TimeOut deve ser informado.'
                    },
                    integer: {
                        message: 'Somente número é permitido.'
                    }
                }
            },
            mailType: {
                validators: {
                    notEmpty: {
                        message: 'MailType deve ser informado.'
                    }
                }
            },
            charset: {
                validators: {
                    notEmpty: {
                        message: 'Charset deve ser informado.'
                    }
                }
            },
            fromEmail: {
                validators: {
                    notEmpty: {
                        message: 'From Email deve ser informado.'
                    },
                    emailAddress: {
						message: 'Email inválido.'
					},
                }
            },
            fromDescricao: {
                validators: {
                    notEmpty: {
                        message: 'From Descrição deve ser informado.'
                    }
                }
            }
            
		}
	})	
	.on('success.form.fv', function(e) {
		// Prevent form submission		
        e.preventDefault();
        
        salvar();
    });
}

function inicializandoComponentes(){
	
	$("#buttonVoltar").bind('click',function(e) {
		// Prevent form submission
        e.preventDefault();
        
        window.parent.location = basepath+"admin";
	});	
	
}

function init() {
	inicializandoComponentes();
	//limpaCampo();
	formConfigEmail();
}

$(document).ready(init);